ইলাস্টিকসার্চ (ElasticSearch)

Elasticsearch Security

Latest Technologies - ইলাস্টিকসার্চ (ElasticSearch) - NCTB BOOK

Elasticsearch Security: সুরক্ষিতভাবে Elasticsearch সেটআপ এবং ব্যবহার

Elasticsearch একটি শক্তিশালী সার্চ এবং অ্যানালিটিক্স ইঞ্জিন, কিন্তু এটি সঠিকভাবে সুরক্ষিত না করলে ডেটা ব্রিচ, অননুমোদিত অ্যাক্সেস, এবং সিস্টেম ভলনারেবিলিটিজের ঝুঁকি থাকে। Elasticsearch সিকিউর করার জন্য কিছু গুরুত্বপূর্ণ কনফিগারেশন, টুলস, এবং বেস্ট প্র্যাকটিস ফলো করা উচিত। এখানে Elasticsearch সুরক্ষিত করার জন্য কিছু ধাপ এবং কনসেপ্টের ব্যাখ্যা দেওয়া হলো।

1. Network Security এবং Access Control

ধাপ ১: Bind Address কনফিগার করা

  • ডিফল্টভাবে, Elasticsearch লোকালহোস্ট (localhost বা 127.0.0.1) এ চলবে। তবে প্রোডাকশন এনভায়রনমেন্টে এটি শুধুমাত্র নির্দিষ্ট IP অ্যাড্রেসে বাউন্ড করতে হবে।
  • elasticsearch.yml ফাইলে network.host প্যারামিটার কনফিগার করে শুধুমাত্র নির্দিষ্ট IP-এ বাউন্ড করতে পারেন:
network.host: 192.168.1.10
  • network.publish_host ব্যবহার করে সঠিক IP সেট করুন, যা ক্লাস্টার এবং নোডগুলোতে কমিউনিকেশন করবে।

ধাপ ২: Firewall Rules এবং Access Control List (ACL) সেট করা

  • Elasticsearch সার্ভার এবং নোডের ফায়ারওয়াল কনফিগারেশন সেট করুন, যাতে শুধুমাত্র নির্দিষ্ট নোড এবং ক্লায়েন্টগুলিই (যেমন Kibana) Elasticsearch-এ সংযোগ করতে পারে।
  • HTTP Port (9200) এবং Transport Port (9300) শুধুমাত্র ট্রাস্টেড IP রেঞ্জে খুলুন।

ধাপ ৩: IP Filtering সেট করা

  • elasticsearch.yml ফাইলে xpack.security.transport.filter কনফিগার করে নির্দিষ্ট IP-র জন্য অ্যালাউ বা ডিনাই রুল সেট করুন।

2. Authentication এবং Authorization (User Management)

ধাপ ১: X-Pack Security সেটআপ করা

  • Elasticsearch-এর X-Pack সিকিউরিটি ফিচার ব্যবহার করে ইউজার অথেন্টিকেশন এবং অথরাইজেশন সিস্টেম ইন্টিগ্রেট করুন।
  • Elasticsearch ৬.৮ এবং এর পরবর্তী ভার্সনে X-Pack বিল্ট-ইন থাকে, যা ইউজার ক্রিয়েশন, রোল বেসড এক্সেস কন্ট্রোল (RBAC), এবং API অথেন্টিকেশন সাপোর্ট করে।

ধাপ ২: User এবং Role তৈরি করা

  • elastic ইউজার এবং অন্যান্য অ্যাডমিনিস্ট্রেটর ইউজার তৈরি করুন। X-Pack সিকিউরিটি সক্রিয় করার পরে, ডিফল্ট অ্যাডমিন ইউজার (elastic) এর পাসওয়ার্ড সেট করুন।
  • Role-based Access Control (RBAC) ব্যবহার করে ডিফারেন্ট রোল এবং প্রিভিলেজ ডিফাইন করুন। উদাহরণস্বরূপ:
{
  "role": {
    "indices": [
      {
        "names": [ "my-index" ],
        "privileges": [ "read", "write" ]
      }
    ]
  }
}
  • Kibana API বা Elasticsearch API ব্যবহার করে ইউজার এবং রোল তৈরি করতে পারেন।

ধাপ ৩: API Key ব্যবহারের সুবিধা

  • Elasticsearch API অ্যাক্সেস করতে API Keys ব্যবহার করতে পারেন, যা OAuth-এর মত কাজ করে এবং নির্দিষ্ট স্কোপ এবং সময় সীমা দিয়ে সিকিউরিটি এনহ্যান্স করে।

3. Encryption এবং Secure Communication (TLS/SSL)

ধাপ ১: HTTPS (TLS) সক্রিয় করা

  • Elasticsearch ক্লাস্টার এবং ক্লায়েন্টের মধ্যে কমিউনিকেশন এনক্রিপ্ট করতে TLS/SSL সেটআপ করুন।
  • elasticsearch.yml ফাইলে সার্টিফিকেট এবং কী কনফিগার করুন:
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: /path/to/keystore.p12
  • সার্টিফিকেট তৈরি করতে Elasticsearch-certutil টুল ব্যবহার করতে পারেন:
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12

ধাপ ২: Transport Layer Security সক্রিয় করা

  • নোডগুলোতে ট্রান্সপোর্ট লেয়ারের মাধ্যমে সিকিউর কমিউনিকেশন নিশ্চিত করতে Transport TLS কনফিগার করুন।
  • সার্টিফিকেট এবং কী যোগ করে xpack.security.transport.ssl সেটিংস সক্রিয় করুন।

4. Audit Logging এবং Monitoring

ধাপ ১: Audit Logging সক্রিয় করা

  • X-Pack ব্যবহার করে Audit Logging সক্রিয় করুন, যা Elasticsearch-এ ইউজার এবং সিস্টেম এক্টিভিটি লগ করে রাখে।
  • elasticsearch.yml ফাইলে xpack.security.audit.enabled সেটিংটি true করুন:
xpack.security.audit.enabled: true
  • এভাবে ইউজার লগইন, API অ্যাক্সেস, এবং ডেটা মডিফিকেশন সম্পর্কে বিস্তারিত লগ ফাইল সংরক্ষণ হবে।

ধাপ ২: Monitoring Setup করা

  • Kibana Monitoring প্লাগইন ব্যবহার করে Elasticsearch ক্লাস্টারের পারফরম্যান্স এবং সিকিউরিটি ইনসাইট পর্যবেক্ষণ করুন।
  • ক্লাস্টারের CPU, মেমরি, শার্ড স্ট্যাটাস, এবং ডেটা ডিস্ট্রিবিউশন মনিটর করুন। যদি কোনো সমস্যা বা থ্রেট ডিটেক্ট হয়, তবে সেটি দ্রুত সমাধান করা যায়।

5. Data Security এবং Access Control

ধাপ ১: Index Level Security সেট করা

  • নির্দিষ্ট ইনডেক্সের জন্য রিড/রাইট এক্সেস কন্ট্রোল কনফিগার করুন। RBAC ব্যবহার করে ডিফারেন্ট ইনডেক্স এবং API এর জন্য এক্সেস নিয়ন্ত্রণ করুন।
  • উদাহরণ: শুধু লজিস্টিক টিমকে logistics-index পড়ার অনুমতি দেওয়া এবং শুধু ডেভেলপমেন্ট টিমকে development-index এ রাইট করার অনুমতি দেওয়া।

ধাপ ২: Document এবং Field Level Security

  • ডকুমেন্ট এবং ফিল্ড লেভেলে এক্সেস কন্ট্রোল কনফিগার করা যায়, যাতে শুধুমাত্র নির্দিষ্ট ইউজাররা নির্দিষ্ট ফিল্ড বা ডকুমেন্ট অ্যাক্সেস করতে পারে।
  • উদাহরণ:
{
  "role": {
    "indices": [
      {
        "names": [ "finance-index" ],
        "privileges": [ "read" ],
        "query": "{\"term\": {\"department\": \"finance\"}}"
      }
    ]
  }
}

6. Best Practices for Elasticsearch Security

  • Disable Dynamic Scripting: নিরাপত্তার জন্য ডায়নামিক স্ক্রিপ্টিং নিষ্ক্রিয় রাখুন, কারণ এটি রিমোট কোড এক্সিকিউশন ঝুঁকি তৈরি করতে পারে।
  • Use Role-based Access Control (RBAC): প্রতিটি ইউজারের জন্য নির্দিষ্ট রোল ডিফাইন করুন, যাতে তারা শুধু তাদের প্রয়োজনীয় ডেটা এবং রিসোর্স অ্যাক্সেস করতে পারে।
  • Regularly Update and Patch Elasticsearch: সিকিউরিটি আপডেট এবং প্যাচ রেগুলারলি ইনস্টল করুন, যাতে নতুন ভলনারেবিলিটি এড়ানো যায়।
  • Enable and Monitor Logs: Audit Logging এবং Kibana Monitoring ব্যবহার করে রেগুলার লগ মনিটর করুন, যাতে সন্দেহজনক অ্যাক্টিভিটি দ্রুত সনাক্ত করা যায়।
  • Limit Access to Sensitive Data: সিক্রেট এবং সেন্সিটিভ ডেটা যেমন API কী, ইউজার পাসওয়ার্ড, এবং কনফিগারেশন ফাইল, প্রপারলি এনক্রিপ্ট করে রাখুন এবং যথাযথ এক্সেস কন্ট্রোল প্রয়োগ করুন।

উপসংহার

Elasticsearch সঠিকভাবে সুরক্ষিত না করলে ডেটা ব্রিচ এবং সিস্টেম ভলনারেবিলিটির ঝুঁকি বেড়ে যায়। সঠিক কনফিগারেশন, TLS/SSL এনক্রিপশন, ইউজার অথেন্টিকেশন, এবং মনিটরিং টুলস ব্যবহার করে Elasticsearch সিকিউর করা যায়। উপরের ধাপগুলো অনুসরণ করে আপনি একটি নিরাপদ, স্থিতিশীল, এবং পারফরম্যান্ট Elasticsearch সিস্টেম তৈরি করতে পারবেন।

Content added By

Security Features এবং User Authentication

Elasticsearch-এর Security Features এবং User Authentication

Elasticsearch-এ ডেটা সুরক্ষা এবং অ্যাক্সেস নিয়ন্ত্রণ নিশ্চিত করার জন্য বিভিন্ন Security Features এবং User Authentication পদ্ধতি রয়েছে। এগুলো Elasticsearch-কে সুরক্ষিত করে এবং অনুমোদিত ইউজারদের ডেটা অ্যাক্সেস করার জন্য প্রয়োজনীয় অথেন্টিকেশন এবং অথরাইজেশন নিয়ন্ত্রণে সহায়তা করে। Elasticsearch ৭.১০ এবং এর পরবর্তী ভার্সনে X-Pack সিকিউরিটি বিল্ট-ইন থাকে, যা ইউজার অথেন্টিকেশন, রোল-বেসড অ্যাক্সেস কন্ট্রোল (RBAC), এবং ডেটা এনক্রিপশন সাপোর্ট করে।

1. Elasticsearch-এর Security Features

a) TLS/SSL Encryption

  • Elasticsearch ক্লাস্টার এবং ক্লায়েন্টের (যেমন Kibana) মধ্যে ডেটা এনক্রিপশন করতে TLS/SSL ব্যবহার করা হয়।
  • Transport Layer Encryption: নোডগুলোর মধ্যে কমিউনিকেশন সিকিউর করতে Transport Layer Security সক্রিয় করুন।
  • HTTPS Setup: HTTP API কল এনক্রিপ্ট করতে HTTPS সক্রিয় করুন। সার্টিফিকেট এবং কী কনফিগার করতে elasticsearch.yml ফাইল ব্যবহার করুন:
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: /path/to/keystore.p12

b) Role-based Access Control (RBAC)

  • RBAC ব্যবহার করে আপনি ইউজারদের নির্দিষ্ট ইনডেক্স, API, এবং ডকুমেন্টের উপর অ্যাক্সেস কন্ট্রোল সেট করতে পারেন।
  • RBAC সিস্টেমে নির্দিষ্ট রোল তৈরি করে সেই রোলের অধীনে ইউজারদের জন্য ইনডেক্স, ডকুমেন্ট এবং API এর প্রিভিলেজ ডিফাইন করা যায়। উদাহরণ:
{
 "indices": [
   {
     "names": ["customer-index"],
     "privileges": ["read", "write"]
   }
 ]
}

c) Audit Logging

  • Audit Logging সক্রিয় করলে Elasticsearch সমস্ত ইউজার এবং API এক্টিভিটি লগ করে। এতে কোনো সন্দেহজনক এক্টিভিটি সহজে মনিটর করা যায়।
  • Audit Logging কনফিগার করতে elasticsearch.yml ফাইলে সেটিংস যুক্ত করুন:
xpack.security.audit.enabled: true

d) Document এবং Field Level Security

  • Elasticsearch-এর সাহায্যে আপনি ডকুমেন্ট এবং ফিল্ড লেভেলে অ্যাক্সেস কন্ট্রোল কনফিগার করতে পারেন। এটি নিশ্চিত করে যে নির্দিষ্ট ইউজার বা রোল শুধুমাত্র নির্দিষ্ট ডকুমেন্ট বা ফিল্ড দেখতে বা মডিফাই করতে পারে।
  • উদাহরণ: কোনো ইউজার শুধু নির্দিষ্ট ডিপার্টমেন্টের ডেটা অ্যাক্সেস করতে পারবে এমন কন্ডিশন সেট করা।

e) IP Filtering এবং Firewall Integration

  • Elasticsearch-এ IP Filtering সেট করে নির্দিষ্ট IP অ্যাড্রেস বা IP রেঞ্জ থেকে অ্যাক্সেস নিয়ন্ত্রণ করা যায়।
  • ফায়ারওয়াল এবং অ্যাক্সেস কন্ট্রোল লিস্ট (ACL) ব্যবহার করে HTTP (9200) এবং Transport (9300) পোর্ট শুধুমাত্র নির্দিষ্ট IP-এর জন্য খুলে রাখুন।

2. User Authentication এবং Authorization

Elasticsearch-এ ইউজার অথেন্টিকেশন এবং অথরাইজেশন সিস্টেম সেটআপ করার জন্য বিভিন্ন পদ্ধতি রয়েছে। এগুলো নিশ্চিত করে যে শুধুমাত্র অথেন্টিকেটেড এবং অথরাইজড ইউজাররাই ডেটা এবং সিস্টেম অ্যাক্সেস করতে পারে।

a) Built-in User Authentication

  • Elasticsearch-এর বিল্ট-ইন ইউজার অথেন্টিকেশন ফিচার ব্যবহার করে ইউজার তৈরি এবং রোল এসাইন করা যায়।
  • ডিফল্টভাবে elastic ইউজার অ্যাডমিনিস্ট্রেটর রোল নিয়ে আসে, যার পাসওয়ার্ড কনফিগার করার জন্য কমান্ড ব্যবহার করা হয়:
bin/elasticsearch-setup-passwords interactive
  • নতুন ইউজার এবং রোল তৈরি করতে Kibana UI অথবা Elasticsearch API ব্যবহার করতে পারেন।

b) Role Creation এবং Assignment

  • Elasticsearch-এর RBAC সিস্টেম ব্যবহার করে বিভিন্ন রোল তৈরি করুন এবং ইউজারদের এসাইন করুন। উদাহরণ:
{
 "cluster": ["manage", "monitor"],
 "indices": [
   {
     "names": ["sales-*"],
     "privileges": ["read"]
   }
 ]
}
  • একটি নির্দিষ্ট ইউজারকে নির্দিষ্ট রোল অ্যাসাইন করুন:
POST /_security/user/sales_user
{
 "password" : "password123",
 "roles" : [ "sales_role" ]
}

c) External Authentication Providers (LDAP, SAML, OAuth)

  • Elasticsearch এক্সটার্নাল অথেন্টিকেশন প্রোভাইডার যেমন LDAP, SAML, এবং OAuth 2.0 সাপোর্ট করে। এই প্রোভাইডারগুলো ইন্টিগ্রেট করে কর্পোরেট ডিরেক্টরি বা আইডেন্টিটি ম্যানেজমেন্ট সিস্টেম ব্যবহার করে ইউজার অথেন্টিকেশন করা যায়।
  • LDAP Integration: LDAP সার্ভারের কনফিগারেশন elasticsearch.yml ফাইলে কনফিগার করুন:
xpack.security.authc.realms.ldap.ldap1:
 order: 0
 url: "ldap://ldap.example.com:389"
 bind_dn: "cn=admin,dc=example,dc=com"
 bind_password: "password"
 user_search:
   base_dn: "dc=example,dc=com"
  • SAML Integration: SAML প্রোটোকল ব্যবহার করে সিঙ্গল সাইন-অন (SSO) সক্ষম করা যায়।

d) API Key এবং Token-based Authentication

  • Elasticsearch API অ্যাক্সেস করার জন্য API Key বা Token-based অথেন্টিকেশন ব্যবহার করা যেতে পারে, যা নির্দিষ্ট ইউজার বা রোলের জন্য সিকিউরিটি নিশ্চিত করে।
  • API Key তৈরি করার জন্য:
POST /_security/api_key
{
 "name": "my-api-key",
 "role_descriptors": {
   "my_role": {
     "cluster": ["all"],
     "index": [
       {
         "names": ["*"],
         "privileges": ["read", "write"]
       }
     ]
   }
 }
}
  • এই API কী নির্দিষ্ট সময়ের জন্য অ্যাক্সেস দিতে পারে এবং স্কোপ-ভিত্তিক প্রিভিলেজ কনফিগার করা যায়।

3. Elasticsearch Security Best Practices

  • Enable HTTPS (TLS) Everywhere: ক্লাস্টারের সব নোড এবং ক্লায়েন্টের মধ্যে HTTPS এনক্রিপশন সক্রিয় রাখুন।
  • Use Strong Passwords and Rotate Them Regularly: ইউজারদের জন্য স্ট্রং পাসওয়ার্ড পলিসি প্রয়োগ করুন এবং নিয়মিত পাসওয়ার্ড পরিবর্তন করুন।
  • Apply Least Privilege Principle: প্রতিটি ইউজার বা রোলকে শুধুমাত্র তাদের প্রয়োজনীয় মিনিমাম প্রিভিলেজ দিন।
  • Monitor Audit Logs: Audit Logging সক্রিয় করে নিয়মিত লগ মনিটর করুন, যাতে সন্দেহজনক এক্টিভিটি দ্রুত সনাক্ত করা যায়।
  • Limit Public Access: প্রোডাকশন পরিবেশে Elasticsearch কখনোই ইন্টারনেট থেকে সরাসরি অ্যাক্সেসযোগ্য না রাখুন। শুধুমাত্র ট্রাস্টেড নোড এবং ক্লায়েন্ট থেকে অ্যাক্সেস দিন।

উপসংহার

Elasticsearch-এ সিকিউরিটি ফিচার এবং ইউজার অথেন্টিকেশন পদ্ধতি সঠিকভাবে ব্যবহার করে আপনি সিস্টেম এবং ডেটাকে সুরক্ষিত রাখতে পারেন। সঠিক কনফিগারেশন, RBAC, TLS/SSL এনক্রিপশন, এবং এক্সটার্নাল অথেন্টিকেশন প্রোভাইডার ইন্টিগ্রেশন ব্যবহার করে একটি শক্তিশালী এবং সিকিউর পরিবেশ তৈরি করা সম্ভব।

Content added By

Role-based Access Control (RBAC) in Elasticsearch

Role-based Access Control (RBAC) হল Elasticsearch-এর একটি নিরাপত্তা মডেল, যা ইউজারদের অ্যাক্সেস এবং প্রিভিলেজ কন্ট্রোল করতে ব্যবহৃত হয়। এটি নিশ্চিত করে যে প্রতিটি ইউজার বা সার্ভিস শুধুমাত্র তাদের নির্দিষ্ট রোল বা দায়িত্ব অনুযায়ী প্রয়োজনীয় ডেটা বা রিসোর্স অ্যাক্সেস করতে পারে। Elasticsearch-এর X-Pack সিকিউরিটি ফিচার RBAC সাপোর্ট করে, যা ইউজার ম্যানেজমেন্ট, ইনডেক্স লেভেল, ক্লাস্টার লেভেল, এবং ডকুমেন্ট বা ফিল্ড লেভেলে অ্যাক্সেস নিয়ন্ত্রণ করা যায়।

1. RBAC-এর মূল উপাদান

Elasticsearch-এর RBAC মডেল কয়েকটি গুরুত্বপূর্ণ উপাদানের উপর ভিত্তি করে তৈরি:

a) Roles

  • রোল নির্ধারণ করে দেয় ইউজাররা কোন কোন ইনডেক্স, API, বা রিসোর্সে কী ধরনের প্রিভিলেজ পাবে।
  • রোলের মাধ্যমে ক্লাস্টার এবং ইনডেক্স লেভেল পারমিশন সেট করা যায়। প্রতিটি রোল একাধিক ইনডেক্স বা ক্লাস্টারের উপর নির্দিষ্ট প্রিভিলেজ যেমন read, write, manage, ইত্যাদি নির্ধারণ করে।

b) Users

  • ইউজাররা হল কনফিগার করা ব্যক্তি বা সার্ভিস অ্যাকাউন্ট, যারা Elasticsearch-এ লগইন করে এবং ডেটা অ্যাক্সেস করে। প্রতিটি ইউজারের সাথে এক বা একাধিক রোল এসাইন করা যায়।

c) Privileges

  • প্রিভিলেজ নির্ধারণ করে ইউজাররা কী ধরনের অ্যাকশন নিতে পারে। এটি হতে পারে read, write, index, delete, বা manage (ক্লাস্টার ম্যানেজমেন্ট)।

d) API Keys

  • API Keys ব্যবহার করে নির্দিষ্ট ইউজার বা সার্ভিস অ্যাকাউন্টগুলোর জন্য অ্যাক্সেস প্রদান করা যায়, যেগুলো RBAC প্রিভিলেজ দ্বারা নিয়ন্ত্রিত হয়।

2. RBAC সেটআপ করার ধাপসমূহ

ধাপ ১: Role তৈরি করা

Elasticsearch-এ নতুন রোল তৈরি করতে নিচের API ব্যবহার করা হয়:

PUT /_security/role/sales_role
{
  "cluster": ["monitor"],
  "indices": [
    {
      "names": [ "sales-data-*"],
      "privileges": ["read", "write"]
    }
  ],
  "applications": [],
  "run_as": [],
  "metadata": {},
  "transient_metadata": {
    "enabled": true
  }
}
  • cluster: এটি ক্লাস্টার লেভেল প্রিভিলেজ নির্ধারণ করে, যেমন monitor (ক্লাস্টার মনিটরিং) বা manage (ক্লাস্টার ম্যানেজমেন্ট)।
  • indices: এখানে ইনডেক্সের নাম এবং প্রিভিলেজ (যেমন read, write) নির্ধারণ করা হয়। এটি নির্দিষ্ট ইনডেক্স বা ইনডেক্স প্যাটার্ন অনুযায়ী কনফিগার করা যায়।
  • run_as: এটি কনফিগার করা ইউজারকে অন্য ইউজারের প্রিভিলেজে রান করার অনুমতি দেয় (প্রয়োজন হলে)।

ধাপ ২: User তৈরি এবং Role অ্যাসাইন করা

একটি ইউজার তৈরি করতে এবং একটি রোল অ্যাসাইন করতে নিচের API ব্যবহার করা হয়:

POST /_security/user/john_doe
{
  "password": "password123",
  "roles": ["sales_role"],
  "full_name": "John Doe",
  "email": "john.doe@example.com"
}
  • এই ইউজারটির পাসওয়ার্ড, নাম, ইমেইল এবং নির্দিষ্ট রোল (এখানে "sales_role") সেট করা হলো।
  • ইউজারটি কনফিগার করা রোলের অধীনে থাকা সমস্ত ইনডেক্স এবং রিসোর্সে অ্যাক্সেস পাবে।

ধাপ ৩: API Key তৈরি করা (Optional)

API Key তৈরি করে নির্দিষ্ট প্রিভিলেজ দিয়ে সার্ভিস অ্যাক্সেস প্রদান করা যায়:

POST /_security/api_key
{
  "name": "service-api-key",
  "role_descriptors": {
    "service_role": {
      "cluster": ["monitor"],
      "index": [
        {
          "names": ["log-*"],
          "privileges": ["read", "write"]
        }
      ]
    }
  }
}
  • role_descriptors: এখানে API Key-এর জন্য নির্দিষ্ট রোল এবং প্রিভিলেজ ডিফাইন করা হয়েছে।

3. RBAC-এর বিভিন্ন লেভেলের পারমিশন

RBAC সিস্টেমে পারমিশন বিভিন্ন লেভেলে কনফিগার করা যায়:

a) Cluster Level Permissions

  • ক্লাস্টার লেভেল প্রিভিলেজ নির্ধারণ করে ইউজাররা ক্লাস্টারের কী ধরনের অ্যাকশন নিতে পারবে। উদাহরণ: manage (ক্লাস্টার পরিচালনা), monitor (ক্লাস্টার মনিটরিং)।

b) Index Level Permissions

  • ইনডেক্স লেভেলে নির্দিষ্ট ইনডেক্স বা ইনডেক্স প্যাটার্ন অনুযায়ী প্রিভিলেজ সেট করা যায়, যেমন read, write, index, বা delete
  • উদাহরণ:
{
 "indices": [
   {
     "names": [ "customer-index-*" ],
     "privileges": [ "read" ]
   }
 ]
}

c) Document এবং Field Level Security

  • ডকুমেন্ট বা ফিল্ড লেভেলে অ্যাক্সেস কন্ট্রোল সেট করা যায়, যা নির্দিষ্ট ইউজার বা রোলকে কেবল নির্দিষ্ট ডকুমেন্ট বা ফিল্ড অ্যাক্সেস করতে দেয়।
  • উদাহরণ:
{
 "indices": [
   {
     "names": ["finance-index"],
     "privileges": ["read"],
     "query": "{\"term\": {\"department\": \"finance\"}}"
   }
 ]
}

4. RBAC Best Practices

a) Least Privilege Principle অনুসরণ করা

  • ইউজারদের সর্বনিম্ন প্রয়োজনীয় প্রিভিলেজ প্রদান করুন।
  • উদাহরণ: শুধুমাত্র read প্রিভিলেজ অ্যাসাইন করুন যদি ইউজারের রাইট বা ম্যানেজ করার প্রয়োজন না থাকে।

b) Role-based Segmentation

  • প্রতিটি দলের জন্য পৃথক রোল তৈরি করুন (যেমন DevOps, Security, Sales) এবং সেই রোল অনুযায়ী তাদের প্রিভিলেজ সেট করুন।

c) Audit Logging Monitor করা

  • প্রতিটি ইউজারের এক্টিভিটি মনিটর করুন এবং অডিট লগ রেগুলারলি চেক করুন যাতে কোনো সন্দেহজনক অ্যাক্টিভিটি ডিটেক্ট করা যায়।

d) Use API Keys for Service Accounts

  • সার্ভিস অ্যাকাউন্ট বা API অ্যাক্সেসের জন্য API Key ব্যবহার করুন, যা নির্দিষ্ট প্রিভিলেজ এবং সেশন লিমিট দিয়ে কনফিগার করা যায়।

e) Role Hierarchies এবং Inheritance ব্যবহার

  • রোল হায়ারার্কি তৈরি করে ইনহেরিটেন্স ব্যবহার করতে পারেন, যেখানে একটি রোলের অধীনে অন্য রোলগুলোকে অন্তর্ভুক্ত করা হয়। এতে রোলগুলো সহজে ম্যানেজ করা যায় এবং ফ্লেক্সিবিলিটি থাকে।

উপসংহার

Elasticsearch-এর RBAC সিস্টেম একটি শক্তিশালী এবং কার্যকর উপায়, যা ইউজার এবং রিসোর্স অ্যাক্সেস সুরক্ষিত রাখতে সহায়ক। সঠিকভাবে RBAC কনফিগার করে আপনি সিস্টেমের ডেটা এবং রিসোর্সের উপর যথাযথ প্রিভিলেজ প্রদান করতে পারেন, যা সিকিউরিটি বাড়াতে এবং ঝুঁকি কমাতে সহায়ক।

Content added By

Transport Layer Security (TLS) সেটআপ

Transport Layer Security (TLS) Elasticsearch-এ সেটআপ করা

Transport Layer Security (TLS) Elasticsearch-এ নোডগুলির মধ্যে এবং ক্লায়েন্ট (যেমন Kibana) ও ক্লাস্টারের মধ্যে নিরাপদ যোগাযোগ নিশ্চিত করতে ব্যবহৃত হয়। TLS সক্রিয় করলে Elasticsearch ডেটা এনক্রিপ্টেড ফরম্যাটে আদান-প্রদান করে, যা ডেটা সুরক্ষার জন্য অত্যন্ত গুরুত্বপূর্ণ। TLS সক্রিয় করার মাধ্যমে আপনি নিশ্চিত করতে পারেন যে আপনার ক্লাস্টার সিকিউর এবং এনক্রিপ্টেড।

TLS সেটআপ করার ধাপসমূহ

TLS সেটআপ করতে, আপনাকে সার্টিফিকেট তৈরি, Elasticsearch কনফিগারেশন, এবং নোডগুলির মধ্যে সঠিক সার্টিফিকেট ডিস্ট্রিবিউশন করতে হবে। নিচে ধাপে ধাপে প্রক্রিয়াটি ব্যাখ্যা করা হলো।

ধাপ ১: Elasticsearch সার্টিফিকেট তৈরি করা

Elasticsearch TLS সার্টিফিকেট তৈরি করার জন্য elasticsearch-certutil টুল ব্যবহার করতে পারেন। এটি Elasticsearch-এ অন্তর্ভুক্ত থাকে এবং সার্টিফিকেট জেনারেট করতে ব্যবহৃত হয়।

a) Certificate Authority (CA) তৈরি করা

প্রথমে একটি Certificate Authority (CA) তৈরি করুন, যা TLS সার্টিফিকেট সাইন করবে:

bin/elasticsearch-certutil ca
  • এই কমান্ড চালালে একটি elastic-stack-ca.p12 ফাইল তৈরি হবে। এটি আপনার CA সার্টিফিকেট।

b) Node সার্টিফিকেট তৈরি করা

এবার, প্রতিটি নোডের জন্য সার্টিফিকেট তৈরি করতে elasticsearch-certutil টুল ব্যবহার করুন:

bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
  • কমান্ডটি চালানোর পর, আপনাকে elastic-stack-ca.p12 ফাইলের পাথ দিতে হবে এবং প্রতিটি নোডের জন্য সার্টিফিকেট তৈরি হবে।
  • একটি .p12 ফাইল (Keystore) তৈরি হবে, যা প্রতিটি নোডে TLS কনফিগারেশনের জন্য ব্যবহৃত হবে।

ধাপ ২: Elasticsearch কনফিগারেশন ফাইলে TLS সক্রিয় করা

Elasticsearch-এর elasticsearch.yml কনফিগারেশন ফাইলে TLS কনফিগারেশন যোগ করতে হবে। প্রতিটি নোডে নিম্নলিখিত সেটিংস যুক্ত করুন:

# Transport Layer TLS Configuration
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /path/to/your/node-cert.p12
xpack.security.transport.ssl.truststore.path: /path/to/your/node-cert.p12

# HTTP Layer TLS Configuration (Optional: For HTTP/HTTPS)
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: /path/to/your/node-cert.p12
xpack.security.http.ssl.truststore.path: /path/to/your/node-cert.p12
  • Transport Layer Configuration: এখানে প্রতিটি নোডের মধ্যে যোগাযোগ সিকিউর করতে TLS এনক্রিপশন সক্রিয় করা হয়েছে। keystore.path এবং truststore.path-এ যে .p12 ফাইলটি তৈরি করেছিলেন তার পাথ যুক্ত করুন।
  • HTTP Layer Configuration (Optional): যদি আপনি HTTP API এনক্রিপ্ট করতে চান, তাহলে HTTP লেয়ারে TLS এনক্রিপশন সক্রিয় করুন।

ধাপ ৩: Elasticsearch সার্ভার রিস্টার্ট করা

কনফিগারেশন পরিবর্তনের পরে প্রতিটি Elasticsearch নোড রিস্টার্ট করুন:

bin/elasticsearch
  • সার্ভার রিস্টার্ট করার পরে, TLS সক্রিয় হবে এবং নোডগুলির মধ্যে এনক্রিপ্টেড কমিউনিকেশন শুরু হবে।

ধাপ ৪: Kibana-তে TLS কনফিগার করা (Optional)

যদি Kibana ব্যবহার করে থাকেন, তাহলে Elasticsearch-এর সাথে সিকিউর কানেকশন কনফিগার করতে হবে। kibana.yml ফাইলে TLS কনফিগারেশন যুক্ত করুন:

elasticsearch.hosts: ["https://your-elasticsearch-node:9200"]
elasticsearch.ssl.certificateAuthorities: ["/path/to/elastic-stack-ca.pem"]
elasticsearch.ssl.verificationMode: full
  • elasticsearch.hosts: আপনার Elasticsearch নোডের HTTPS URL।
  • elasticsearch.ssl.certificateAuthorities: আপনার CA সার্টিফিকেট (elastic-stack-ca.pem) এর পাথ, যা Kibana সার্ভারে রাখতে হবে।
  • verificationMode: full সেট করুন, যাতে Kibana এবং Elasticsearch-এর মধ্যে TLS সার্টিফিকেট পুরোপুরি ভেরিফাই হয়।

ধাপ ৫: Testing এবং Validation

TLS সঠিকভাবে কাজ করছে কি না, তা যাচাই করতে:

  • Elasticsearch Logs চেক করুন (elasticsearch.log) যদি কোনো TLS সম্পর্কিত এরর বা ওয়ার্নিং থাকে।
  • Kibana Logs চেক করুন যদি Kibana এবং Elasticsearch-এর মধ্যে TLS কনফিগারেশন নিয়ে কোনো সমস্যা হয়।
  • curl Command ব্যবহার করে Elasticsearch HTTP API যাচাই করুন:
curl -u elastic:password --cacert /path/to/elastic-stack-ca.pem https://your-elasticsearch-node:9200
  • যদি TLS সঠিকভাবে কনফিগার করা থাকে, তাহলে আপনি Elasticsearch-এর রেসপন্স পাবেন।

TLS সেটআপের Best Practices

  1. Use Strong Certificates: সর্বদা স্ট্রং এনক্রিপশন এবং লং সার্টিফিকেট ভ্যালিডিটি নিশ্চিত করুন।
  2. Regularly Rotate Certificates: নিয়মিতভাবে সার্টিফিকেট রোটেট করুন, যাতে কোনো কম্প্রোমাইজ হলে দ্রুত রিকভারি সম্ভব হয়।
  3. Limit Access to Keystores and Truststores: Keystore এবং Truststore ফাইলগুলোর অ্যাক্সেস শুধুমাত্র অ্যাডমিনিস্ট্রেটরদের কাছে সীমাবদ্ধ রাখুন।
  4. Enable HTTP TLS (HTTPS): HTTP API এর জন্য HTTPS চালু করুন, যাতে ক্লায়েন্ট এবং সার্ভারের মধ্যে নিরাপদ যোগাযোগ নিশ্চিত হয়।

উপসংহার

Elasticsearch-এ TLS সেটআপ করা ডেটা সিকিউরিটি নিশ্চিত করার একটি গুরুত্বপূর্ণ ধাপ। উপরের ধাপগুলো অনুসরণ করে, আপনি Elasticsearch নোডগুলোর মধ্যে এবং ক্লায়েন্ট ও সার্ভারের মধ্যে TLS এনক্রিপশন সক্রিয় করতে পারবেন, যা ক্লাস্টারকে সুরক্ষিত রাখবে এবং ডেটা লিকেজ বা অননুমোদিত অ্যাক্সেস প্রতিরোধ করবে।

Content added By

Elasticsearch এর নিরাপত্তা নিশ্চিত করা অত্যন্ত গুরুত্বপূর্ণ, বিশেষ করে যখন সংবেদনশীল বা মিশন-ক্রিটিকাল ডেটার সাথে কাজ করা হয়। নিচে Elasticsearch সুরক্ষার কিছু সেরা প্র্যাকটিস উল্লেখ করা হলো:

১. নেটওয়ার্ক অ্যাক্সেস সুরক্ষিত করুন

  • ফায়ারওয়াল ব্যবহার করুন: ফায়ারওয়াল নিয়ম স্থাপন করে Elasticsearch এর নেটওয়ার্ক অ্যাক্সেস সীমাবদ্ধ করুন। শুধুমাত্র বিশ্বাসযোগ্য IP বা সার্ভিসগুলোকে ক্লাস্টারে অ্যাক্সেস দেওয়া উচিত।
  • ট্রান্সপোর্ট লেয়ার সিকিউরিটি (TLS) সক্রিয় করুন: নোড এবং ক্লায়েন্টদের মধ্যে ডেটা ট্রান্সমিশন এনক্রিপ্ট করতে TLS/SSL সার্টিফিকেট ব্যবহার করুন। এটি ডেটা ট্রানজিটে এনক্রিপশন ও প্রমাণীকরণ নিশ্চিত করবে।
  • HTTP পোর্টে অ্যাক্সেস সীমিত করুন: নিশ্চিত করুন যে HTTP পোর্ট (ডিফল্ট ৯২০০) পাবলিক ইন্টারনেটের জন্য উন্মুক্ত নয়, যদি না একেবারে প্রয়োজন হয়। অ্যাক্সেস কন্ট্রোল মেকানিজম যেমন VPN বা IP হোয়াইটলিস্টিং ব্যবহার করুন।
  • ক্লাস-অরিজিন রিসোর্স শেয়ারিং (CORS) নিষ্ক্রিয় করুন: সাধারণত পাবলিকভাবে এন্ডপয়েন্টগুলো উন্মুক্ত রাখা ঝুঁকিপূর্ণ, তাই CORS নিষ্ক্রিয় রাখুন।

২. ইনডেক্স লেভেল সুরক্ষা নিশ্চিত করুন

  • রোল-বেজড অ্যাক্সেস কন্ট্রোল (RBAC) ব্যবহার করুন: ইউজার এবং অ্যাপ্লিকেশনগুলোর জন্য RBAC সক্রিয় করুন, যাতে তারা শুধুমাত্র প্রয়োজনীয় ইনডেক্স বা ডেটায় অ্যাক্সেস পায়।
  • API অ্যাক্সেস সীমিত করুন: শুধুমাত্র নির্দিষ্ট API গুলোতে অ্যাক্সেস দেওয়া উচিত এবং সংবেদনশীল API গুলোতে অ্যাক্সেস সীমাবদ্ধ রাখতে হবে।

৩. অ্যাথেন্টিকেশন এবং অথোরাইজেশন

  • ইউজার অথেন্টিকেশন চালু করুন: অভ্যন্তরীণ ইউজার ডাটাবেস, LDAP, বা অন্য কোনো অথেন্টিকেশন পদ্ধতি ব্যবহার করে ইউজার অথেন্টিকেশন সক্রিয় করুন।
  • Elasticsearch API-এর জন্য API Keys ব্যবহার করুন: অ্যাপ্লিকেশন বা সার্ভিসগুলোকে API Keys এর মাধ্যমে অথেন্টিকেট করুন, যা পাসওয়ার্ডের চেয়ে নিরাপদ।

৪. ডেটা এনক্রিপশন এবং প্রাইভেসি

  • ডেটা এট রেস্ট এনক্রিপ্ট করুন: ক্লাস্টারের ডেটা এনক্রিপ্ট করতে Elasticsearch এর এনক্রিপশন সাপোর্ট বা ডিস্ক এনক্রিপশন ব্যবহার করুন।
  • সেন্সিটিভ ডেটা মাস্কিং ও ফিল্টারিং: ইনডেক্সে সংবেদনশীল তথ্য সংরক্ষণ করা হলে, ডেটা ফিল্টারিং বা মাস্কিং মেকানিজম ব্যবহার করুন।

৫. ক্লাস্টার কনফিগারেশন সুরক্ষা

  • ক্লাস্টার এবং নোড কনফিগারেশন ফাইল সুরক্ষিত রাখুন: যাতে কেবলমাত্র অথোরাইজড ইউজাররা কনফিগারেশন ফাইলে পরিবর্তন আনতে পারে।
  • Kibana নিরাপত্তা: Kibana ব্যবহারের সময়ও ইউজার অথেন্টিকেশন ও RBAC নিশ্চিত করুন, যাতে কেবল অথোরাইজড ইউজাররা ডেটা ভিউ করতে পারে।

৬. মনিটরিং ও লগিং

  • সিকিউরিটি লগ মনিটরিং চালু করুন: ক্লাস্টারের সিকিউরিটি সম্পর্কিত ইভেন্টগুলোর জন্য লগিং চালু রাখুন এবং নিয়মিত মনিটরিং করুন।
  • Elasticsearch ও Kibana এর লগ এনালাইসিস: লগ ফাইলগুলো এনালাইজ করে কোন সন্দেহজনক কার্যকলাপ শনাক্ত করার চেষ্টা করুন।

৭. আপডেট এবং প্যাচ ম্যানেজমেন্ট

  • নিয়মিত আপডেট ইনস্টল করুন: Elasticsearch এবং এর সাথে সম্পর্কিত প্লাগইনসমূহ নিয়মিত আপডেট ও প্যাচ করুন, যাতে সিকিউরিটি হোলগুলো বন্ধ থাকে।
  • প্লাগইনগুলো যাচাই করুন: কোন প্লাগইন ইনস্টল করার আগে সেগুলোর সিকিউরিটি যাচাই করুন এবং শুধুমাত্র অফিসিয়াল বা নির্ভরযোগ্য প্লাগইন ইনস্টল করুন।

এই প্র্যাকটিসগুলো অনুসরণ করলে আপনার Elasticsearch ক্লাস্টারের সিকিউরিটি উল্লেখযোগ্যভাবে উন্নত হবে এবং ডেটা ও সার্ভিসগুলো সুরক্ষিত থাকবে।

Content added By
Promotion